//
//
//
//class Solution {
//    public List<List<Integer>> subsets(int[] nums) {
//        ret.add(new ArrayList<>());
//        dfs(nums, 0, nums.length);
//        return ret;
//    }
//
//
//    List<List<Integer>> ret = new ArrayList<>();
//    List<Integer> cur = new ArrayList<>();
//
//    public void dfs(int[] nums, int index, int n) {
//        if (index < 0 || index >= n) return;
//        for (int i = index; i < n; i++) {
//            cur.add(nums[i]);
//            ret.add(new ArrayList<>(cur));
//            index++;
//            dfs(nums, index, n);
//            cur.remove(cur.size() - 1);
//        }
//    }
//
//}